iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 16
0
自我挑戰組

Git學習筆記系列 第 16

練習時做錯了怎麼辦?git reflog

  • 分享至 

  • xImage
  •  

今天來介紹reflog

我們在練習的時候

往往練習時會做錯指令 沒達到想要的結果

這時候除了重做練習之外

偷懶一點 我們可以透過 reflog 來還原到特定的commit

之前去上保哥的課的時候

有給我一個觀念

在git下 任何有commit的版本 都不會弄丟

即使做錯了

也可以從 reflog 中找回來

所以可以放心地亂玩

舉個實際的例子

原本的線圖如下

Imgur

之後下reset指令到313b3bd

​$ git reset --hard 313b3bd
HEAD is now at 313b3bd Bug fixed

reset --hard 到 HEAD 後才發現reset前,後面那版 commit 還是需要

這時候看一下分支上的線圖

Imgur

會發現 reset 後的線圖上

原本在 HEAD 後面的 commit 不見了

利用reflog 來查看還沒reset前的版本的hashid

我們這邊要找的應該就是 f2b286a master@{1}: commit: Revert "Bug fixed" 這版

​$ git reflog master

313b3bd master@{0}: reset: moving to 313b3bd
f2b286a master@{1}: commit: Revert "Bug fixed"
1bd2f36 master@{2}: reset: moving to 1bd2f3664c850eacff93260c5b4416032af67f2d
69f30fd master@{3}: commit: revert 313b3bd
1bd2f36 master@{4}: commit: commit stash data
.
.
.
.
.

reset到該版本

​$ git reset --hard f2b286a
HEAD is now at f2b286a Revert "Bug fixed"

這下子版本就回到做錯的步驟的前一版了

線圖如下

Imgur

P.S. 強者我同事補充:gc後會清掉reflog 所以reflog不是一直都會存在 要注意喔

git-reflog 官方文件


上一篇
git cherry-pick
下一篇
該從哪裡下指令?
系列文
Git學習筆記31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言